﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using NHibernate.Mapping.ByCode.Conformist;
using SGC.BE;

namespace SGC.DL.PlanAuditoria.Mapeo
{
    internal class DL_PlanAuditoriaMapeo : ClassMapping<BE_PlanAuditoria>
    {
        public DL_PlanAuditoriaMapeo()
        {

            Table("TB_PLAN_AUDITORIA");
            Id(planAuditoria => planAuditoria.CODIGO_PLAN, mapper => mapper.Column("IDPLAN_AUDITORIA"));
            Property(planAuditoria => planAuditoria.VERSION_PLAN, mapper => mapper.Column("VERSION"));
            Property(planAuditoria => planAuditoria.FECHA, mapper => mapper.Column("FECHA"));
            Property(planAuditoria => planAuditoria.ALCANCE, mapper => mapper.Column("ALCANCE"));
            Property(planAuditoria => planAuditoria.OBJETIVO, mapper => mapper.Column("OBJETIVO"));
            Property(planAuditoria => planAuditoria.AUDITADO, mapper => mapper.Column("AUDITADO"));
            ManyToOne(planAuditoria => planAuditoria.PROCESO,
                proceso =>
                {
                    proceso.Column("IDPROCESO");
                });
            Bag(planAuditoria => planAuditoria.AREAS,
                areas =>
                {
                    areas.Table("TB_PLAN_AREA");
                    areas.Cascade(NHibernate.Mapping.ByCode.Cascade.None);
                    areas.Key(k =>
                    {
                        k.Column("IDPLAN_AUDITORIA"); 
                                });
                }
                , ce => ce.ManyToMany(k => k.Column("IDAREA")));
            Bag(planAuditoria => planAuditoria.PROCEDIMIENTOS,
                proc =>
                {
                    proc.Table("TB_PLAN_PROCEDIMIENTO");
                    proc.Cascade(NHibernate.Mapping.ByCode.Cascade.None);
                    proc.Key(k =>
                                {
                                    k.Column("IDPLAN_AUDITORIA");
                                });
                }
                , ce => ce.ManyToMany(p => p.Column("IDPROCEDIMIENTO")));

            //Bag(planAuditoria => planAuditoria.AUDITORES,
            //    auditor =>
            //    {
            //        auditor.Table("TB_PLAN_AUDITOR");
            //        auditor.Cascade(NHibernate.Mapping.ByCode.Cascade.None);                    
            //        auditor.Key(k =>
            //        {
            //            k.Column("IDPLAN_AUDITORIA");
            //        });
            //    }
            //    , ce => ce.ManyToMany(p => p.Column("IDEMPLEADO")));
            
        }  
    }
}